Network routers for packet-based communications protocols such as Internet Protocol (IP) direct incoming information to the next neighbor along a route to the intended destination for the packet. To do this, typically each router along the route must perform address prefix (normally referred to as just “prefix”) lookup operations on a routing table to determine the appropriate next hop address for the destination IP prefix. Such operations are performed by either an embedded network processor or, more commonly, by a separate network search engine. In addition to performing searches on a prefix (routing) table consisting of destination prefixes and the associated next hop information, the network search engine is also typically tasked with maintaining the prefix table (i.e., inserting and deleting prefixes).
Originally the hardware for network search engines employed ternary content addressable memory (TCAM), a type of memory consisting of a bit comparator and two memory elements, one for storing data and the other storing a compare mask. The TCAM compares incoming data with the value stored in the data memory under the control of the mask value, which may be programmed to override the comparison result to “always match” (i.e., “don't care”). In operation, a TCAM-based network search engine functions by storing all prefixes of a routing table in a TCAM array in a specific, prioritized order, with each prefix's associated next hop information stored in a corresponding (linked) location in another memory. During prefix lookup, a key is placed on the comparand (compare operand) bus of the TCAM array and compared against all prefixes in the memory. The array of match results from all comparisons is sent through a priority logic unit to determine the highest priority match, with the winning match used to address the next hop memory from which the corresponding next hop information is read and returned.
However, TCAM-based solutions are generally slow, expensive and consume substantial power during operation. More recently, software based search engines using a general purpose processor and normal memory have been under development. In such devices, the routing table prefixes and next hop information are stored in the memory in data structures built according to some algorithm. Searches are performed via a series of memory read and comparison operations using the general purpose processor.
There is, therefore, a need in the art for an improved IP address lookup scheme.